{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>pregnants</th>\n",
       "      <th>Plasma_glucose_concentration</th>\n",
       "      <th>blood_pressure</th>\n",
       "      <th>Triceps_skin_fold_thickness</th>\n",
       "      <th>serum_insulin</th>\n",
       "      <th>BMI</th>\n",
       "      <th>Diabetes_pedigree_function</th>\n",
       "      <th>Age</th>\n",
       "      <th>Target</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.639947</td>\n",
       "      <td>0.866045</td>\n",
       "      <td>-0.031990</td>\n",
       "      <td>0.670643</td>\n",
       "      <td>-0.181541</td>\n",
       "      <td>0.166619</td>\n",
       "      <td>0.468492</td>\n",
       "      <td>1.425995</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>-0.844885</td>\n",
       "      <td>-1.205066</td>\n",
       "      <td>-0.528319</td>\n",
       "      <td>-0.012301</td>\n",
       "      <td>-0.181541</td>\n",
       "      <td>-0.852200</td>\n",
       "      <td>-0.365061</td>\n",
       "      <td>-0.190672</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.233880</td>\n",
       "      <td>2.016662</td>\n",
       "      <td>-0.693761</td>\n",
       "      <td>-0.012301</td>\n",
       "      <td>-0.181541</td>\n",
       "      <td>-1.332500</td>\n",
       "      <td>0.604397</td>\n",
       "      <td>-0.105584</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>-0.844885</td>\n",
       "      <td>-1.073567</td>\n",
       "      <td>-0.528319</td>\n",
       "      <td>-0.695245</td>\n",
       "      <td>-0.540642</td>\n",
       "      <td>-0.633881</td>\n",
       "      <td>-0.920763</td>\n",
       "      <td>-1.041549</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>-1.141852</td>\n",
       "      <td>0.504422</td>\n",
       "      <td>-2.679076</td>\n",
       "      <td>0.670643</td>\n",
       "      <td>0.316566</td>\n",
       "      <td>1.549303</td>\n",
       "      <td>5.484909</td>\n",
       "      <td>-0.020496</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>0.342981</td>\n",
       "      <td>-0.185948</td>\n",
       "      <td>0.133453</td>\n",
       "      <td>-0.012301</td>\n",
       "      <td>-0.181541</td>\n",
       "      <td>-0.997745</td>\n",
       "      <td>-0.818079</td>\n",
       "      <td>-0.275760</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>-0.250952</td>\n",
       "      <td>-1.435189</td>\n",
       "      <td>-1.851862</td>\n",
       "      <td>0.329171</td>\n",
       "      <td>-0.610145</td>\n",
       "      <td>-0.211799</td>\n",
       "      <td>-0.676133</td>\n",
       "      <td>-0.616111</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>1.827813</td>\n",
       "      <td>-0.218823</td>\n",
       "      <td>-0.031990</td>\n",
       "      <td>-0.012301</td>\n",
       "      <td>-0.181541</td>\n",
       "      <td>0.414047</td>\n",
       "      <td>-1.020427</td>\n",
       "      <td>-0.360847</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>-0.547919</td>\n",
       "      <td>2.476909</td>\n",
       "      <td>-0.197433</td>\n",
       "      <td>1.808882</td>\n",
       "      <td>4.660524</td>\n",
       "      <td>-0.284572</td>\n",
       "      <td>-0.947944</td>\n",
       "      <td>1.681259</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>1.233880</td>\n",
       "      <td>0.109925</td>\n",
       "      <td>1.953325</td>\n",
       "      <td>-0.012301</td>\n",
       "      <td>-0.181541</td>\n",
       "      <td>-0.022590</td>\n",
       "      <td>-0.724455</td>\n",
       "      <td>1.766346</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   pregnants  Plasma_glucose_concentration  blood_pressure  \\\n",
       "0   0.639947                      0.866045       -0.031990   \n",
       "1  -0.844885                     -1.205066       -0.528319   \n",
       "2   1.233880                      2.016662       -0.693761   \n",
       "3  -0.844885                     -1.073567       -0.528319   \n",
       "4  -1.141852                      0.504422       -2.679076   \n",
       "5   0.342981                     -0.185948        0.133453   \n",
       "6  -0.250952                     -1.435189       -1.851862   \n",
       "7   1.827813                     -0.218823       -0.031990   \n",
       "8  -0.547919                      2.476909       -0.197433   \n",
       "9   1.233880                      0.109925        1.953325   \n",
       "\n",
       "   Triceps_skin_fold_thickness  serum_insulin       BMI  \\\n",
       "0                     0.670643      -0.181541  0.166619   \n",
       "1                    -0.012301      -0.181541 -0.852200   \n",
       "2                    -0.012301      -0.181541 -1.332500   \n",
       "3                    -0.695245      -0.540642 -0.633881   \n",
       "4                     0.670643       0.316566  1.549303   \n",
       "5                    -0.012301      -0.181541 -0.997745   \n",
       "6                     0.329171      -0.610145 -0.211799   \n",
       "7                    -0.012301      -0.181541  0.414047   \n",
       "8                     1.808882       4.660524 -0.284572   \n",
       "9                    -0.012301      -0.181541 -0.022590   \n",
       "\n",
       "   Diabetes_pedigree_function       Age  Target  \n",
       "0                    0.468492  1.425995       1  \n",
       "1                   -0.365061 -0.190672       0  \n",
       "2                    0.604397 -0.105584       1  \n",
       "3                   -0.920763 -1.041549       0  \n",
       "4                    5.484909 -0.020496       1  \n",
       "5                   -0.818079 -0.275760       0  \n",
       "6                   -0.676133 -0.616111       1  \n",
       "7                   -1.020427 -0.360847       0  \n",
       "8                   -0.947944  1.681259       1  \n",
       "9                   -0.724455  1.766346       1  "
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = pd.read_csv('./Data_pima-indians-diabetes.csv')\n",
    "y_train = df['Target']\n",
    "X_train = df.drop(['Target'], axis=1)\n",
    "feat_names = X_train.columns\n",
    "df.head(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 768 entries, 0 to 767\n",
      "Data columns (total 9 columns):\n",
      "pregnants                       768 non-null float64\n",
      "Plasma_glucose_concentration    768 non-null float64\n",
      "blood_pressure                  768 non-null float64\n",
      "Triceps_skin_fold_thickness     768 non-null float64\n",
      "serum_insulin                   768 non-null float64\n",
      "BMI                             768 non-null float64\n",
      "Diabetes_pedigree_function      768 non-null float64\n",
      "Age                             768 non-null float64\n",
      "Target                          768 non-null int64\n",
      "dtypes: float64(8), int64(1)\n",
      "memory usage: 54.1 KB\n"
     ]
    }
   ],
   "source": [
    "df.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>pregnants</th>\n",
       "      <th>Plasma_glucose_concentration</th>\n",
       "      <th>blood_pressure</th>\n",
       "      <th>Triceps_skin_fold_thickness</th>\n",
       "      <th>serum_insulin</th>\n",
       "      <th>BMI</th>\n",
       "      <th>Diabetes_pedigree_function</th>\n",
       "      <th>Age</th>\n",
       "      <th>Target</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>7.680000e+02</td>\n",
       "      <td>7.680000e+02</td>\n",
       "      <td>7.680000e+02</td>\n",
       "      <td>7.680000e+02</td>\n",
       "      <td>7.680000e+02</td>\n",
       "      <td>7.680000e+02</td>\n",
       "      <td>7.680000e+02</td>\n",
       "      <td>7.680000e+02</td>\n",
       "      <td>768.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>2.544261e-17</td>\n",
       "      <td>1.474515e-17</td>\n",
       "      <td>-3.321273e-17</td>\n",
       "      <td>-1.888680e-16</td>\n",
       "      <td>2.941802e-17</td>\n",
       "      <td>2.815312e-16</td>\n",
       "      <td>2.422108e-16</td>\n",
       "      <td>1.528002e-16</td>\n",
       "      <td>0.348958</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>1.000652e+00</td>\n",
       "      <td>1.000652e+00</td>\n",
       "      <td>1.000652e+00</td>\n",
       "      <td>1.000652e+00</td>\n",
       "      <td>1.000652e+00</td>\n",
       "      <td>1.000652e+00</td>\n",
       "      <td>1.000652e+00</td>\n",
       "      <td>1.000652e+00</td>\n",
       "      <td>0.476951</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>-1.141852e+00</td>\n",
       "      <td>-2.552931e+00</td>\n",
       "      <td>-4.002619e+00</td>\n",
       "      <td>-2.516429e+00</td>\n",
       "      <td>-1.467353e+00</td>\n",
       "      <td>-2.074783e+00</td>\n",
       "      <td>-1.189553e+00</td>\n",
       "      <td>-1.041549e+00</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>-8.448851e-01</td>\n",
       "      <td>-7.201630e-01</td>\n",
       "      <td>-6.937615e-01</td>\n",
       "      <td>-4.675972e-01</td>\n",
       "      <td>-2.220849e-01</td>\n",
       "      <td>-7.212087e-01</td>\n",
       "      <td>-6.889685e-01</td>\n",
       "      <td>-7.862862e-01</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>-2.509521e-01</td>\n",
       "      <td>-1.530732e-01</td>\n",
       "      <td>-3.198993e-02</td>\n",
       "      <td>-1.230129e-02</td>\n",
       "      <td>-1.815412e-01</td>\n",
       "      <td>-2.258989e-02</td>\n",
       "      <td>-3.001282e-01</td>\n",
       "      <td>-3.608474e-01</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>6.399473e-01</td>\n",
       "      <td>6.112653e-01</td>\n",
       "      <td>6.297816e-01</td>\n",
       "      <td>3.291706e-01</td>\n",
       "      <td>-1.554775e-01</td>\n",
       "      <td>6.032562e-01</td>\n",
       "      <td>4.662269e-01</td>\n",
       "      <td>6.602056e-01</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>3.906578e+00</td>\n",
       "      <td>2.542658e+00</td>\n",
       "      <td>4.104082e+00</td>\n",
       "      <td>7.955377e+00</td>\n",
       "      <td>8.170442e+00</td>\n",
       "      <td>5.042397e+00</td>\n",
       "      <td>5.883565e+00</td>\n",
       "      <td>4.063716e+00</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          pregnants  Plasma_glucose_concentration  blood_pressure  \\\n",
       "count  7.680000e+02                  7.680000e+02    7.680000e+02   \n",
       "mean   2.544261e-17                  1.474515e-17   -3.321273e-17   \n",
       "std    1.000652e+00                  1.000652e+00    1.000652e+00   \n",
       "min   -1.141852e+00                 -2.552931e+00   -4.002619e+00   \n",
       "25%   -8.448851e-01                 -7.201630e-01   -6.937615e-01   \n",
       "50%   -2.509521e-01                 -1.530732e-01   -3.198993e-02   \n",
       "75%    6.399473e-01                  6.112653e-01    6.297816e-01   \n",
       "max    3.906578e+00                  2.542658e+00    4.104082e+00   \n",
       "\n",
       "       Triceps_skin_fold_thickness  serum_insulin           BMI  \\\n",
       "count                 7.680000e+02   7.680000e+02  7.680000e+02   \n",
       "mean                 -1.888680e-16   2.941802e-17  2.815312e-16   \n",
       "std                   1.000652e+00   1.000652e+00  1.000652e+00   \n",
       "min                  -2.516429e+00  -1.467353e+00 -2.074783e+00   \n",
       "25%                  -4.675972e-01  -2.220849e-01 -7.212087e-01   \n",
       "50%                  -1.230129e-02  -1.815412e-01 -2.258989e-02   \n",
       "75%                   3.291706e-01  -1.554775e-01  6.032562e-01   \n",
       "max                   7.955377e+00   8.170442e+00  5.042397e+00   \n",
       "\n",
       "       Diabetes_pedigree_function           Age      Target  \n",
       "count                7.680000e+02  7.680000e+02  768.000000  \n",
       "mean                 2.422108e-16  1.528002e-16    0.348958  \n",
       "std                  1.000652e+00  1.000652e+00    0.476951  \n",
       "min                 -1.189553e+00 -1.041549e+00    0.000000  \n",
       "25%                 -6.889685e-01 -7.862862e-01    0.000000  \n",
       "50%                 -3.001282e-01 -3.608474e-01    0.000000  \n",
       "75%                  4.662269e-01  6.602056e-01    1.000000  \n",
       "max                  5.883565e+00  4.063716e+00    1.000000  "
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\logistic.py:433: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.\n",
      "  FutureWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "GridSearchCV(cv=5, error_score='raise-deprecating',\n",
       "       estimator=LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,\n",
       "          intercept_scaling=1, max_iter=100, multi_class='warn',\n",
       "          n_jobs=None, penalty='l2', random_state=None, solver='warn',\n",
       "          tol=0.0001, verbose=0, warm_start=False),\n",
       "       fit_params=None, iid='warn', n_jobs=-1,\n",
       "       param_grid={'penalty': ['l1', 'l2'], 'C': [0.001, 0.01, 0.1, 1, 10, 100, 1000]},\n",
       "       pre_dispatch='2*n_jobs', refit=True, return_train_score='warn',\n",
       "       scoring='neg_log_loss', verbose=0)"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#评价指标为logloss的LogisticRegression模型\n",
    "from sklearn.linear_model import LogisticRegression\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "Cs = [0.001, 0.01, 0.1, 1, 10, 100, 1000]\n",
    "penaltys = ['l1','l2']\n",
    "tuned_parameters = dict(penalty=penaltys,C=Cs)\n",
    "\n",
    "lr = LogisticRegression()\n",
    "grid1 = GridSearchCV(lr, tuned_parameters, cv=5, scoring='neg_log_loss',n_jobs=-1)\n",
    "grid1.fit(X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The best score corresponding to evaluation index of logloss is  0.4760260523093464\n",
      "The best parameters are  {'C': 1, 'penalty': 'l1'}\n"
     ]
    }
   ],
   "source": [
    "print(\"The best score corresponding to evaluation index of logloss is \", -grid1.best_score_)\n",
    "print(\"The best parameters are \", grid1.best_params_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:125: FutureWarning: You are accessing a training score ('mean_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:125: FutureWarning: You are accessing a training score ('std_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#可视化cv误差参数\n",
    "test_means = grid1.cv_results_['mean_test_score']\n",
    "test_stds = grid1.cv_results_['std_test_score']\n",
    "train_means = grid1.cv_results_['mean_train_score']\n",
    "train_stds = grid1.cv_results_['std_train_score']\n",
    "\n",
    "n_Cs = len(Cs)\n",
    "n_penaltys = len(penaltys)\n",
    "test_means = np.array(test_means).reshape(n_Cs,n_penaltys)\n",
    "test_stds = np.array(test_stds).reshape(n_Cs,n_penaltys)\n",
    "train_means = np.array(train_means).reshape(n_Cs,n_penaltys)\n",
    "train_stds = np.array(train_stds).reshape(n_Cs,n_penaltys)\n",
    "\n",
    "x_axis = np.log10(Cs)\n",
    "for i, value in enumerate(penaltys):\n",
    "    plt.errorbar(x_axis, -test_means[:,i], yerr=test_stds[:,i], label=str(value)+'Test')\n",
    "    plt.errorbar(x_axis, -train_means[:,i], yerr=train_stds[:,i], label=str(value)+'Train')\n",
    "\n",
    "plt.legend()\n",
    "plt.xlabel('log(Cs)')\n",
    "plt.ylabel('logloss')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The best score corresponding to evaluation index of accuracy is  0.7747395833333334\n",
      "The best parameters are  {'C': 0.1, 'penalty': 'l2'}\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\logistic.py:433: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.\n",
      "  FutureWarning)\n"
     ]
    }
   ],
   "source": [
    "#评价指标为accuracy的LogisticRegression模型\n",
    "grid2 = GridSearchCV(lr, tuned_parameters, cv=5, scoring='accuracy', n_jobs=-1)\n",
    "grid2.fit(X_train, y_train)\n",
    "\n",
    "print(\"The best score corresponding to evaluation index of accuracy is \", grid2.best_score_)\n",
    "print(\"The best parameters are \", grid2.best_params_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:125: FutureWarning: You are accessing a training score ('mean_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:125: FutureWarning: You are accessing a training score ('std_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#可视化误差曲线\n",
    "test_means = grid2.cv_results_['mean_test_score']\n",
    "test_stds = grid2.cv_results_['std_test_score']\n",
    "train_means = grid2.cv_results_['mean_train_score']\n",
    "train_stds = grid2.cv_results_['std_train_score']\n",
    "\n",
    "n_Cs = len(Cs)\n",
    "n_penaltys = len(penaltys)\n",
    "test_means = np.array(test_means).reshape(n_Cs,n_penaltys)\n",
    "test_stds = np.array(test_stds).reshape(n_Cs,n_penaltys)\n",
    "train_means = np.array(train_means).reshape(n_Cs,n_penaltys)\n",
    "train_stds = np.array(train_stds).reshape(n_Cs,n_penaltys)\n",
    "\n",
    "x_axis = np.log10(Cs)\n",
    "for i, value in enumerate(penaltys):\n",
    "    plt.errorbar(x_axis, test_means[:,i], yerr=test_stds[:,i], label=str(value)+'Test')\n",
    "    plt.errorbar(x_axis, train_means[:,i], yerr=train_stds[:,i], label=str(value)+'Train')\n",
    "\n",
    "plt.legend()\n",
    "plt.xlabel('log(Cs)')\n",
    "plt.ylabel('accuracy')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>columns</th>\n",
       "      <th>coeffient_logloss</th>\n",
       "      <th>coeffient_accuracy</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Plasma_glucose_concentration</td>\n",
       "      <td>[1.128469451057313]</td>\n",
       "      <td>[0.9977309169127753]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>BMI</td>\n",
       "      <td>[0.6291965005310164]</td>\n",
       "      <td>[0.5460044910698728]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>pregnants</td>\n",
       "      <td>[0.4096280162392766]</td>\n",
       "      <td>[0.3616713513905088]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>Diabetes_pedigree_function</td>\n",
       "      <td>[0.27932568254763446]</td>\n",
       "      <td>[0.2599038326076921]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>Age</td>\n",
       "      <td>[0.14392767867606185]</td>\n",
       "      <td>[0.1554435734114967]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Triceps_skin_fold_thickness</td>\n",
       "      <td>[0.024713687522082937]</td>\n",
       "      <td>[0.05966520979020303]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>serum_insulin</td>\n",
       "      <td>[-0.0840663044306678]</td>\n",
       "      <td>[-0.04513553103768548]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>blood_pressure</td>\n",
       "      <td>[-0.09299761206238426]</td>\n",
       "      <td>[-0.0648660966137046]</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                        columns       coeffient_logloss  \\\n",
       "1  Plasma_glucose_concentration     [1.128469451057313]   \n",
       "5                           BMI    [0.6291965005310164]   \n",
       "0                     pregnants    [0.4096280162392766]   \n",
       "6    Diabetes_pedigree_function   [0.27932568254763446]   \n",
       "7                           Age   [0.14392767867606185]   \n",
       "3   Triceps_skin_fold_thickness  [0.024713687522082937]   \n",
       "4                 serum_insulin   [-0.0840663044306678]   \n",
       "2                blood_pressure  [-0.09299761206238426]   \n",
       "\n",
       "       coeffient_accuracy  \n",
       "1    [0.9977309169127753]  \n",
       "5    [0.5460044910698728]  \n",
       "0    [0.3616713513905088]  \n",
       "6    [0.2599038326076921]  \n",
       "7    [0.1554435734114967]  \n",
       "3   [0.05966520979020303]  \n",
       "4  [-0.04513553103768548]  \n",
       "2   [-0.0648660966137046]  "
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = pd.DataFrame({\n",
    "                    \"columns\":list(feat_names), \n",
    "                    \"coeffient_logloss\":list(grid1.best_estimator_.coef_.T),\n",
    "                    \"coeffient_accuracy\":list(grid2.best_estimator_.coef_.T)\n",
    "                  })\n",
    "df.sort_values(by=['coeffient_logloss'],ascending=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
